/* Utils for beacon data.
* Neil Z. Shao
*/
#include "utils_beacon.h"

using namespace std;

namespace easyshow
{
	///////////////////////////////////// mediam /////////////////////////////////////
	float findMedian(const std::deque<float> &values)
	{
		if (values.size() == 0)
			return 0;

		vector<float> vecs(values.size());
		for (int i = 0; i < values.size(); ++i)
			vecs[i] = values[i];

		vector<int> idxs = sortIndex(vecs, true);
		return vecs[idxs[values.size() / 2]];
	}

	///////////////////////////////////// string /////////////////////////////////////
	// make string out of int
	std::string toString(int num, int n_digits)
	{
		char format[50], str[50];
		if (n_digits > 0)
			sprintf(format, "%%0%dd", n_digits);
		else
			sprintf(format, "%%d");

		sprintf(str, format, num);
		return str;
	}

	// make string out of float
	std::string toString(double num, int n_digits)
	{
		char format[50], str[50];
		if (n_digits > 0)
			sprintf(format, "%%.%df", n_digits);
		else
			sprintf(format, "%%f");

		sprintf(str, format, num);
		return str;
	}
}
